package com.jerry.hm.datastructure.deque;

/**
 * 双端队列
 *
 * @author Jerry
 * @since 2024/10/4 12:54
 */
public interface Deque<E> {

    /**
     * 头部添加元素
     *
     * @param e
     * @return
     */
    boolean offerFirst(E e);

    /**
     * 尾部添加元素
     *
     * @param e
     * @return
     */
    boolean offerLast(E e);

    /**
     * 头部移除元素
     *
     * @return
     */
    E pollFirst();

    /***
     * 尾部移除元素
     * @return
     */
    E pollLast();

    /**
     * 获取头部元素
     *
     * @return
     */
    E peekFirst();

    /**
     * 获取尾部元素
     *
     * @return
     */
    E peekLast();

    /**
     * 是否空
     *
     * @return
     */
    boolean isEmpty();

    /**
     * 是否满
     *
     * @return
     */
    boolean isFull();

}
